package cliente;

import java.util.ArrayList;

import locacao.ILocacao;
import locacao.Locacao;

import funcionario.Funcionario;

public class RepositorioCliente implements ICliente {

	private static ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
	private static int ContID = 1;
	private Cliente cli;

	@Override
	public void adicionar(Cliente cliente) {
		cliente.setId(ContID);
		this.listaClientes.add(cliente);
		this.ContID++;
	}

	@Override
	public void editar(Cliente cliente) {
		this.cli = pesquisar(cliente.getId());
		int index = listaClientes.indexOf(this.cli);
		this.listaClientes.set(index, cliente);
	}

	@Override
	public void remover(int IdCliente) {
		this.cli = pesquisar(IdCliente);
		this.listaClientes.remove(this.cli);
	}

	@Override
	public boolean existe(int IdCliente) {
		boolean res = false;
		this.cli = null;
		this.cli = pesquisar(IdCliente);
		if (this.cli != null) {
			res = true;
		}
		return res;
	}

	@Override
	public Cliente pesquisar(int idCliente) {
		for (Cliente cli : listaClientes) {
			if (cli.getId() == idCliente) {
				this.cli = cli;
				break;
			}
		}
		return this.cli;
	}

	@Override
	public ArrayList<Cliente> listar() {
		return this.listaClientes;
	}

	@Override
	public ArrayList<Cliente> listar(String nome) {
		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
		int tam = nome.trim().length();
		for (Cliente cli : this.listaClientes) {
			int tamCli = cli.getNome().trim().length();
			String nomeLista = cli.getNome().trim()
					.substring(0, (tam <= tamCli) ? tam : tamCli).toLowerCase();
			if (nomeLista.equals(nome.trim().toLowerCase())) {
				clientes.add(cli);
			}
		}
		return clientes;
	}

	@Override
	public boolean clienteTemEndereco(int idEndereco) {
		boolean res = false;
		for (Cliente cli : this.listaClientes) {
			if (cli.getEndereco().getId() == idEndereco) {
				res = true;
				break;
			}
		}
		return res;
	}

}
